#ifndef __WIZ_GEOMETRY_BOX_BASE_HPP__SHANHAOBO_19800429__
#define __WIZ_GEOMETRY_BOX_BASE_HPP__SHANHAOBO_19800429__

#include "../WizGeometryForwardDeclare.hpp"

namespace Wiz
{
    namespace Box
    {
        namespace Base
        {
            template<typename ElementT>
            struct Type
            {
                typedef ElementT                        tElement;
                typedef tElement&                       tElementRef;
                typedef const tElement&                 tElementIn;

                typedef ::Wiz::Vector3::Type<tElement>  tVector3;

                WIZ_DECLARE_IO_WITHNAME(tVector3, tVector3);
                WIZ_DECLARE_REF_WITHNAME(tVector3, tVector3);

                ::Wiz::Bool::Type                       m_IsValid;
            public:
                Type() : m_IsValid(::Wiz::Bool::False)
                {

                }

                Type(::Wiz::Bool::In InValid) : m_IsValid(InValid)
                {
                }

                ::Wiz::Bool::Type IsValid() const
                {
                    return m_IsValid;
                }

                ::Wiz::Bool::Type NotValid() const
                {
                    return IsValid() == ::Wiz::Bool::False;
                }
            };
        } /// end of namespace Base
    } /// end of namespace Box
} /// end of namespace Wiz

#endif /*__WIZ_GEOMETRY_BOX_BASE_HPP__SHANHAOBO_19800429__*/
